package com.soft.javase.ch09.set;

import java.util.HashSet;
import java.util.LinkedHashSet;

/**
 * @author wangzhisen
 * @Desc TODO
 * @date 2025/5/5
 *
 * Set 接口   -   Map<K,V> key键对应的就是Set
 * 1.存取顺序不一致
 * 2.不允许重复存放元素
 *
 * LinkedHashSet 实现类
 * 1.存取顺序一致，因为多了一条链表进行维护存取顺序
 * 2.不允许重复存放元素，根据equals()和hashCode()
 * 3.线程不安全
 * 4.允许存放null值
 * 5.数据结构
 *     5.1 JDK1.8 之前 “数组+链表”+链表
 *     5.2 JDK1.8 之后 “数组+链表+红黑树”+链表
 */
public class LinkedHashSetDemo {

    public static void main(String[] args) {
        HashSet<String> set = new HashSet();
        set.add("A");
        set.add("aaa");
        set.add("中");
        set.add("aaa");
        set.forEach(System.out::println); //aaa A 中

        System.out.println("------------LinkedHashSet存取顺序一致性-------------");
        LinkedHashSet<String> linkedHashSet = new LinkedHashSet();
        linkedHashSet.add("A");
        linkedHashSet.add("aaa");
        linkedHashSet.add("中");
        linkedHashSet.add("aaa");
        linkedHashSet.forEach(System.out::println); //A aaa 中
    }
}
